//
//  ViewController.m
//  21-NSURLRequest&Response
//
//  Created by 曹曹 on 16/8/11.
//  Copyright © 2016年 曹曹. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
#pragma mark - NSURL
    // 负责请求的地址
    NSURL *baiduURL = [NSURL URLWithString:@"http://www.baidu.com/1.html?userName=xxx&pwdxxx"];
    NSLog(@"baiduURL :%@", baiduURL);
    // 1.完整的URL对应的字符串格式
    NSLog(@"baiduURLString :%@", baiduURL.absoluteString);
    // 2.host: 主机地址/域名
    NSLog(@"baiduURLHost : %@", baiduURL.host);
    // 3.path: 主机地址(域名)后对应的路径(? 以前的内容)
    NSLog(@"baiduURLPath :%@", baiduURL.path);
    // 4.query:? 以后的内容
    NSLog(@"baiduURLQuery :%@", baiduURL.query);
    // 5.scheme: URL遵循的协议
    NSLog(@"baiduURLScheme :%@", baiduURL.scheme);
    // 6.除去协议的内容
    NSLog(@"baiduURL :%@", baiduURL.resourceSpecifier);
    
#pragma mark - 不可变请求/可变请求
    // 1.NSURLRequest不可变请求
    // 啥都不能改, 只能获取
    NSURLRequest *baiduRequest = [NSURLRequest requestWithURL:baiduURL];
    NSLog(@"baiduRequest: %@", baiduRequest);
    // 2.NSMutableURLRequest可变请求
    // 一般处理网络请求都是用NSMutableURLRequest
    NSMutableURLRequest *baiduMutableRequest = [NSMutableURLRequest requestWithURL:baiduURL];
    // 1> 超时时间, 一个请求持续多久会失败
    baiduMutableRequest.timeoutInterval = 100;
    // 2> HTTPMethod 请求的姿势, GET POST PUT DELETE
    baiduMutableRequest.HTTPMethod = @"GET";
    // 3> allHTTPHeaderFields 设置网络请求头
    baiduMutableRequest.allHTTPHeaderFields = @{@"User-Agent": @"iOS 10.0 / iPhone 8, 1"};
    // 根据字典特性, key相同时, 后填入的值会覆盖之前的值
    // 推荐使用
    [baiduMutableRequest setValue:@"iOS 10.0 / iPhone 9, 1" forHTTPHeaderField:@"User-Agent"];
    // 获取
    [baiduMutableRequest valueForHTTPHeaderField:@"User-Agent"];
    NSLog(@"baiduRequest:%@", baiduMutableRequest.allHTTPHeaderFields);
    // 4>httpBody (一般POST请求时才会使用)
    // 一般都是字典或者字符串转换成的data
    baiduMutableRequest.HTTPBody = [NSData data];
#pragma mark - NSURLResponse
    // 响应
    NSHTTPURLResponse *response = [[NSHTTPURLResponse alloc] initWithURL:baiduURL
                                                              statusCode:200
                                                             HTTPVersion:@"HTTP/1.1"
                                                            headerFields:@{@"data": [NSData data]}];
    // 1.statusCode 状态码
    // response.statusCode
    // 2.allHeaderFields响应头
    // 1> 内容类型
    //    Content-Type: application/json;charset:utf-8
    // 2> 时间 日期
    // 3> 缓存的一些内容
    NSLog(@"999999%@", response.allHeaderFields);
    // http超文本传输协议
    // https安全超文本传输协议
    // ftp文件传输协议
    // file
}


- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


@end
